//class Solution {
//public:
//    int timeRequiredToBuy(vector<int>& tickets, int k) {
//        int ret = 0;
//        queue<int> q;
//        for (auto& e : tickets) q.push(e);
//        while (q.size())
//        {
//            if (k == 0 && q.front() == 1)
//            {
//                ret++;
//                break;
//            }
//
//            if (q.front() == 1)
//            {
//                q.pop();
//            }
//            else
//            {
//                q.front() -= 1;
//                int t = q.front();
//                q.pop();
//                q.push(t);
//            }
//            ret++;
//            k--;
//            if (k == -1) k = q.size() - 1;
//        }
//        return ret;
//    }
//};

//class Solution {
//public:
//    bool CheckPermutation(string s1, string s2) {
//        if (s1.size() != s2.size()) return false;
//        unordered_map<char, int> hash1;
//        unordered_map<char, int> hash2;
//        for (auto& e : s1) hash1[e]++;
//        for (auto& e : s2) hash2[e]++;
//        for (auto& e : s2)
//        {
//            if (hash1[e] != hash2[e]) return false;
//        }
//        return true;
//    }
//};
//class Solution {
//public:
//    bool CheckPermutation(string s1, string s2) {
//        if (s1.size() != s2.size()) return false;
//        sort(s1.begin(), s1.end());
//        sort(s2.begin(), s2.end());
//        for (int i = 0; i < s1.size(); i++)
//        {
//            if (s1[i] != s2[i]) return false;
//        }
//        return true;
//    }
//};